"""
	定义: 在不改变原函数的调用以及内部代码的情况下,为其添加新功能,而这个新功能的实现需要闭包
	装饰器的原理就是拦截加闭包,从而达到逻辑的延续
"""
import time

# 在不改变原有功能(存取钱)的定义与调用情况下,增加验证账号的功能,增加程序执行时间
def new_function(func):
	"""
	账号验证
	:param func: 传入方法
	:return: 返回内嵌函数
	"""
	def merge(*args, **kwargs):
		print("账号验证")
		return func(*args, **kwargs)
	return merge

def print_execute(func):
	"""
	程序执行时间
	:param func: 传入 方法
	:return: 返回方法
	"""
	def wrapper(*args, **kwargs):
		start_time = time.time()
		so = func(* args, ** kwargs)
		execute_time = time.time() - start_time
		print(f"程序执行时间是: {execute_time:.4f}")
		return so
	return wrapper

@print_execute
@new_function
def deposit(moneys):
	print(f"存了{moneys}快钱咯.")

@print_execute
@new_function
def withdraw(money, login_di, pwd):
	print(f"取了{money}块钱.", login_di, pwd)

deposit(10000)
withdraw(500,'asd',213)

